
/**
 * ==========================================
 *       javascript 里的class类  方便类的创建
 * ==========================================
 */
var Class = { // 全局静态类, 用于声明一个新的类并提供构造函数支持
	create : function() {
		return function() { // 返回一个函数, 代表着这个新声明的类的构造函数
			// 一个命名为initialize的函数将被这个类实现作为类的构造函数
			this.initialize.apply(this, arguments);// initialize函数将在你实例化一个变量的时候被调用执行(即上面7个步骤中的第5步)
		}
	}
}
/**
 * ==========================================
 *              日期格式化工具
 * ==========================================
 */
var customDateFormate = Class.create();

customDateFormate.prototype = {
	initialize : function(date) {
		this.date = date;
	},
	// 取得指定日期月份的最后一天的日期
	getLastDay : function(year, month) {
		var new_year = year; // 取当前的年份
		var new_month = month++;// 取下一个月的第一天，方便计算（最后一天不固定）
		if (month > 12) // 如果当前大于12月，则年份转到下一年
		{
			new_month -= 12; // 月份减
			new_year++; // 年份增
		}
		var newnew_date = new Date(new_year, new_month, 1); // 取当年当月中的第一天
		return (new Date(newnew_date.getTime() - 1000 * 60 * 60 * 24)).getDate();// 获取当月最后一天日期
	},
	// 取得指定日期月份的最后一天
	getMonthLastDate : function(date) {
		var new_year = date.getFullYear(); // 取当前的年份
		var new_month = date.getMonth() + 1;// 取下一个月的第一天，方便计算（最后一天不固定）
		var newnew_date = new Date(new_year, new_month, 1); // 取当年当月中的第一天
		return (new Date(newnew_date.getTime() - 1000 * 60 * 60 * 24));// 获取当月最后一天日期
	},
	// 取得指定日期月份的最后一天 字符串的行式
	getMonthLastDateStr : function(date) {
		return this.dateFormate(this.getMonthLastDate(date));
	},
	// 得到一周的最后一天
	getWeekLastDate : function(date) {
		return this.afterDate(date,(6 - this.getChineseWeekIndex(date)));
	},
	// 得到一周的最后一天 字符串的行式
	getWeekLastDateStr : function(date) {
		return this.dateFormate(this.getWeekLastDate(date));
	},
	// 取得指定日期月份的第一天ewq
	getMonthFirstDate : function(date) {
		var new_year = date.getFullYear(); // 取当前的年份
		var new_month = date.getMonth();// 取下一个月的第一天，方便计算（最后一天不固定）
		var newnew_date = new Date(new_year, new_month, 1); // 取当年当月中的第一天
		return newnew_date;// 获取当月最后一天日期
	},
	// 以字符串的行式得到一个月的第一天
	getMonthFirstDateStr : function(date) {
		return this.dateFormate(this.getMonthFirstDate(date));
	},
	// 得到一周的第一天
	getWeekFirstDate : function(date) {
		return this.beforeDate(date,this.getChineseWeekIndex(date) );;
	},
	// 以字符串的行式得到一周的第一天
	getWeekFirstDateStr : function(date) {
		return this.dateFormate(this.getWeekFirstDate(date));
	},
	// 得到中国的周排列索引
	getChineseWeekIndex : function(date) {
		// 按中国的习惯来显示
		var weekIndex = date.getDay();// 从 Date 对象返回一周中的某一天 (0 ~ 6)。
		var chineseWeekIndex = weekIndex;
		if (weekIndex > 0) {// 周一到周六的情况
			chineseWeekIndex = weekIndex - 1;
		} else {// 周日的情况
			chineseWeekIndex = 6;
		}
		return chineseWeekIndex;
	},
	//指定日期的前多少天 的日期
	beforeDate:function(date,days){
		var currDate=new Date();
		currDate.setTime(date.getTime() - (days * 1000 * 60 * 60 * 24));
		return currDate;
	},
	//指定日期的前后少天 的日期
	afterDate:function(date,days){
		var currDate=new Date();
		currDate.setTime(date.getTime() + (days * 1000 * 60 * 60 * 24));
		return currDate;
	},
	//指定日期的前多少个月 的日期
	beforeMonth:function(date,month){
		var curr_year = date.getFullYear(); //
		var curr_month = date.getMonth();//
		var minus_year=parseInt(month/12);
		var minus_month=parseInt(month%12);
		curr_year-=minus_year;
		curr_month-=minus_month;
		if(curr_month<minus_month){
			curr_year--;
			curr_month+=12;
		}
		var newnew_date = new Date(curr_year, curr_month, 1); //
		return newnew_date;//
	},
	//指定日期的后少个月 的日期
	afterMonth:function(date,month){
		var curr_year = date.getFullYear();
		var curr_month = date.getMonth();
		var curr_year=parseInt((month+curr_month)/12);
		var curr_month=parseInt((month+curr_month)%12);
		var newnew_date = new Date(curr_year, curr_month, 1);
		return newnew_date;
	},
	//指定日期的前多少个月 的日期
	beforeMonth_current:function(month){
		return this.beforeMonth(new Date(),month);//
	},
	//指定日期的后少个月 的日期
	afterMonth_current:function(month){
		return this.afterMonth(new Date(),month);//
	},
	// 将日期按照 YYYY－MM－DD的方式格式化
	dateFormate : function(date) {
		var year = date.getFullYear();
		var month = date.getMonth() + 1;// +1代表本月
		var date = date.getDate();

		if (month > 9)
			month = month;
		else
			month = "0" + month;

		if (date > 9)
			date = date;
		else
			date = "0" + date;
		return year + "-" + month + "-" + date;
	},
	timeFormateShort : function(date) {
		var hour = date.getHours();
		var minute = date.getMinutes() + 1;// +1代表本月
		var second = date.getSeconds();

		if (hour < 9)
			hour = "0" + hour;

		if (minute < 9)
			minute = "0" + minute;

		return hour + ":" + minute ;
	},
	timeFormateLong : function(date) {
		var hour = date.getHours();
		var minute = date.getMinutes() + 1;// +1代表本月
		var second = date.getSeconds();

		if (hour < 9)
			hour = "0" + hour;

		if (minute < 9)
			minute = "0" + minute;

		if (minute < 9)
			second = "0" + second;

		return hour + ":" + minute+":"+second ;
	},
	dateTimeFormate : function(date) {
		var dateStr=this.dateFormate(date);
		var timeStr=this.timeFormateShort(date);

		return dateStr + " " + timeStr;
	},

	//字符串转为日期
	str2Date:function(dateStr){
		return new Date(Date.parse(dateStr.replace(/-/g, "/")));
	},
	timesBuild:	function(times){// times=1368769732000
		// 1.秒前
		// 2.分前
		// 3.今天 时分
		// 4.月 日 时分
		// 5.年 月 时 分
		var timeStr = "";
		if (times != undefined && times.length > 0) {
			var currTime = new Date();
			var dateTime = new Date();
			var D000 = new Date(currTime.getFullYear(), currTime.getMonth(), currTime.getDate(), 0, 0, 0);
			var D00000 = new Date(currTime.getFullYear(), 0, 1, 0, 0, 0);

			dateTime.setTime(parseInt(times));

			var m = parseInt((currTime.getTime() - dateTime.getTime()) / 1000);
			var f = parseInt((currTime.getTime() - dateTime.getTime()) / 1000 / 60);
			var s = parseInt((currTime.getTime() - dateTime.getTime()) / 1000 / 60 / 60);
			var t = parseInt(dateTime.getTime() - D000.getTime());
			var n = parseInt(dateTime.getTime() - D00000.getTime());
			var minute=dateTime.getMinutes();
				if (minute < 9)
					minute = "0" + minute;
			if (m < 60) {
				timeStr = m + "秒前";
			} else if (f < 60) {
				timeStr = f + "分前";
			} else if (n < 0) {
				timeStr = dateTime.getFullYear() + "年" + (dateTime.getMonth() + 1) + "月" + dateTime.getDate() + "日 "
						+ dateTime.getHours() + ":" + minute;
			} else if (t < 0) {
				timeStr = (dateTime.getMonth() + 1) + "月" + dateTime.getDate() + "日 " + dateTime.getHours() + ":"
						+ minute;
			} else {
				timeStr = "今天  " + dateTime.getHours() + ":" + minute;
			}
		}
		return timeStr;
	},
	test:function(){
		alert("customDateFormate test successful!!");

	}
}

var CDF=new customDateFormate();





